วิธีการเพิ่มขนาดการอัปโหลดไฟล์ในกรณีที่ใช้ PHP ใน Elastic Beanstalk
POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ผมจะมาแนะนำวิธีการเพิ่มขนาดการอัปโหลดไฟล์ในกรณีที่ใช้ PHP ใน Elastic Beanstalk เพื่อให้สามารถอัปโหลดไฟล์ตามขนาดที่ต้องการใน Elastic Beanstalk ได้ครับ
สิ่งที่ต้องมี
- มี Application และ Environment ใน Elastic Beanstalk แล้ว
ในบทความนี้ผมจะละเว้นการอธิบายในส่วนของการสร้าง Application และ Environment ใน Elastic Beanstalk
หากผู้อ่านต้องการเรียนรู้วิธีการเริ่มต้นใช้งาน Elastic Beanstalk ผมขอแนะนำให้อ่านบทความด้านล่างนี้ครับ
เตรียมไฟล์สำหรับ Deploy เพื่อใช้ตั้งค่าใน Elastic Beanstalk
ขั้นตอนการเตรียมไฟล์นี้เราสามารถสร้างไฟล์ที่จะใช้ Deploy ใน Notepad หรือ VSCode ก็ได้ ซึ่งในบทความนี้ผมจะสร้างไฟล์ในโปรแกรม VSCode ครับ
สำหรับผู้ใช้งานที่ยังไม่มีโปรแกรม VSCode ดาวน์โหลดและติดตั้งตามตัวอย่างลิงก์บทความด้านล่างนี้ได้เลยครับ
เราจะมาทำการสร้างไฟล์เว็บไซต์ที่ใช้ทดสอบการอัปโหลดไฟล์ และสร้างไฟล์ที่ใช้ตั้งค่าเพิ่มขนาดการอัปโหลดไฟล์ให้กับเว็บไซต์ใน Nginx และ PHP ตามขนาดที่เราต้องการใน Elastic Beanstalk
ตัวอย่างนี้ผมต้องการอัปโหลดไฟล์ขนาดไม่เกิน 30M ก็จะตั้งค่าไว้ที่30M
ครับ
- สร้างไฟล์เว็บไซต์ที่ใช้ทดสอบการอัปโหลดไฟล์ขนาดที่ต้องการ
- form.php
- upload.php
- สร้างไฟล์ที่ใช้ตั้งค่าเพิ่มขนาดการอัปโหลดไฟล์ขนาดที่ต้องการ
- .platform/nginx/conf.d/elasticbeanstalk/10_nginx_upload_file_size.conf
- .ebextensions/10_php_upload_file_size.config
ข้อควรระวัง: ถ้าชื่อโฟลเดอร์และไฟล์ผิด หรือ สร้างโฟลเดอร์และไฟล์ไม่ตรงตามตัวอย่างที่เขียนไว้ เมื่อ Deploy ไปยัง Elastic Beanstalk แล้ว ระบบจะไม่ปรับการตั้งค่าให้
ก่อนเริ่มทำการสร้างไฟล์ที่ใช้ Deploy ให้สร้างโฟลเดอร์ใน Windows เช่น โฟลเดอร์ชื่อ deploy เป็นต้น แล้วเปิดโปรแกรม VSCode ขึ้นมา แล้วคลิก Open Folder แล้วเลือกโฟลเดอร์ deploy ที่สร้างไว้เมื่อสักครู่นี้ จากนั้นเริ่มทำขั้นตอนถัดไปได้เลย (โฟลเดอร์ deploy เป็นแค่ตัวอย่างในบทความนี้เท่านั้น)
เกี่ยวกับรหัสฟีดบรรทัด (New Line) [ LF, CRLF ]
ก่อนที่จะทำการเตรียมไฟล์สำหรับ Deploy ให้ดูวิธีการเปลี่ยนประเภทไฟล์จาก CRLF ให้เป็น LF ตามลิงก์หัวข้อด้านล่างนี้
ดูตัวอย่างที่นี่เฉพาะหัวข้อนี้: เกี่ยวกับรหัสฟีดบรรทัด (New Line) [ LF, CRLF ]
สร้างไฟล์ form.php
ผมจะสร้างไฟล์ form.php ขึ้นมาเพื่อใช้ทดสอบการอัปโหลดไฟล์
สร้างไฟล์form.php
และคัดลอกโค้ดด้านล่างนี้วางลงในไฟล์
files: "/etc/php.d/99uploadsize.ini": mode: "000644" owner: root group: root content: | upload_max_filesize = 30M post_max_size = 30M commands: remove_old_ini: command: "rm -f /etc/php.d/99uploadsize.ini.bak"
สร้างไฟล์ upload.php
ผมจะสร้างไฟล์ upload.php ขึ้นมาเพื่อใช้ทดสอบการอัปโหลดไฟล์โดยแสดงผลลัพธ์ของขนาดไฟล์ต่อจากหน้า form.php
สร้างไฟล์upload.php
และคัดลอกโค้ดด้านล่างนี้วางลงในไฟล์
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { echo "file size =" . $_FILES["upfile"]["size"]; } else { echo "error"; } ?></p> </body> </html>
เพิ่มขนาดการอัปโหลดไฟล์สำหรับ NGINX
ให้สร้างไฟล์ "10_nginx_upload_file_size.conf" ตาม path ด้านล่างนี้
Path: ".platform/nginx/conf.d/elasticbeanstalk/10_nginx_upload_file_size.conf"
แล้วคัดลอกโค้ดด้านล่างนี้วางในไฟล์10_nginx_upload_file_size.conf
client_max_body_size 30M; client_body_buffer_size 30M;
เพิ่มขนาดการอัปโหลดไฟล์สำหรับ PHP
ต่อไปให้สร้างไฟล์ "10_php_upload_file_size.config" ตาม path ด้านล่างนี้
Path: ".ebextensions/10_php_upload_file_size.config"
แล้วคัดลอกโค้ดด้านล่างนี้วางในไฟล์10_php_upload_file_size.config
files: "/etc/php.d/99uploadsize.ini": mode: "000644" owner: root group: root content: | upload_max_filesize = 30M post_max_size = 30M commands: remove_old_ini: command: "rm -f /etc/php.d/99uploadsize.ini.bak"
Deploy Project
เมื่อเตรียมไฟล์เสร็จแล้วให้ทำการสร้างไฟล์ ZIP เตรียมไว้ เพื่อใช้ในการ Deploy ครับ
ในตัวอย่างนี้ผมได้สร้างไฟล์ต่างๆในโฟลเดอร์ที่ชื่อว่า deploy ผมก็จะเข้าไปที่โฟลเดอร์นั้น และรวมไฟล์ทั้งหมดให้เป็นไฟล์ ZIP
จากนั้นก็ Upload ใน Application versions ของ Elastic Beanstalk และทำการ Deploy ไปยัง Environment ที่กำลังใช้งานอยู่ครับ
ตัวอย่างการ Deploy
ตรวจสอบการตั้งค่า Config ใน EC2 Instance
คลิกที่ URL จากหน้า Environment ของเรา
[environment-name].ap-southeast-1.elasticbeanstalk.com
เมื่อแสดงหน้าจอแบบนี้แล้ว เริ่มทำการตรวจสอบได้เลย
ทำการตรวจสอบหน้า form โดยพิมพ์/form.php
ต่อท้าย URL Environment แบบนี้
จากนั้นทำการทดสอบอัปโหลดไฟล์ที่มีขนาดไม่เกิน 30M ตัวอย่างนี้จะใช้ไฟล์ขนาด25,735KB
http://[environment_name].ap-southeast-1.elasticbeanstalk.com/form.php
เมื่อแสดงหน้าจอแบบนี้ ก็ถือว่าเสร็จเรียบร้อยแล้วครับ
สรุป
การใช้งานเว็บไซต์เกี่ยวกับการอัปโหลดไฟล์ใน Elastic Beanstalk เราสามารถตั้งค่าให้อัปโหลดไฟล์ตามขนาดที่ต้องการได้ด้วยวิธีเหล่านี้ นอกจากนี้ต้องระวังเรื่องการสร้างโฟล์เดอร์และไฟล์ให้ดี เพราะว่าถ้าตั้งชื่อโฟลเดอร์หรือไฟล์ผิดก็จะทำให้เกิดข้อผิดพลาดได้ครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !